#pragma once
#include <string>
#include <iostream>
//@author A0091791X
using namespace std;

struct dateTime
{
	int year;
	int month;
	int day;
	int hour;
	int minute;
};

enum transactionType
{
	INCOME = 1,
	EXPENSE = 2,
	TRANSFER = 3
};

class Transaction
{
protected:
	double _amount;
	int _serialNo;
	struct dateTime _dateTime;
	int const _type;
	string _category;
	string _account;
	string _accountFrom;
	string _accountTo;

public:
	Transaction(double, int, int,int,int,int,int, int, string, string, string,string);
	Transaction(double, int, struct dateTime, int, string, string, string,string);
	~Transaction();
	//getter
	string getCategory();
	string getAccount();
	string getAccountFrom();
	string getAccountTo();
	double getAmount();
	struct dateTime getDateTime();
	int getSerialNo();
	int getType();

	//setter
	bool setCategory(string);
	bool setAccount(string);
	bool setAccountFrom(string);
	bool setAccountTo(string);
	bool setAmount(double);
	bool setDateTime(int,int,int,int,int);
	bool setDateTime(struct dateTime);
	bool setSerialNo(int);
};